package com.winner.data.util;


import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * hutool的md5加密
 *
 * @author wangxinle5
 * @since 2022/04/25
 */
public class Md5Util {

    private static final Pattern MD5_REGEX = Pattern.compile("^[a-z0-9]{32}$");

    /**
     * 如果没有加密, 则进行md5加密; 如果md5加密了,返回原值
     *
     * @param keyword
     * @return 返回加密后的结果
     */
    public static String md5(String keyword) {
        if (StrUtil.isEmpty(keyword)) {
            return null;
        } else if (isMd5(keyword.toLowerCase())) {
            return keyword.toLowerCase();
        } else {
            return SecureUtil.md5(keyword.toUpperCase());
        }
    }

    public static boolean isMd5(String str) {
        Matcher m = MD5_REGEX.matcher(str);
        return m.matches();
    }

    public static void main(String[] args) {
        String userCard = md5("610502199110210813");
        // 加密后是32位, 数据库定义长度32即可
        System.out.println(userCard);
    }

}
